//这个专门用来存放处理函数
//导入数据连接对象
const db = require('../db/index');
//导入加密模块
const bcrypt = require('bcryptjs');
//导入jwt模块
const jwt = require('jsonwebtoken');
//引入配置文件
const config = require('../config')
exports.regUser = (req,res)=>{
    //获取表单用户数据
    const userinfo = req.body
    //判断用户名密码是否为空 
    // if(!userinfo.username || !userinfo.password){
    //     return res.send({status:1,message:"用户名和密码不能为空"})
    // }
    //这个时候再执行sql语句查询是否有相同的用户名
    const sqlStr = 'select * from ev_user where username = ?';
    db.query(sqlStr,userinfo.username,(err,results)=>{

        //results返回的是一个数组 里面包含了username对应的整行的信息
        //执行sql失败
        if(err) return res.cc(err)
        //数组长度大于0说明查询到了相应的用户名 
        if(results.length>0) return res.cc('用户名已存在')
        //利用bcryptjs模块对我们的密码进行加密 使用hashSync()方法进行加密
        
       
    })
    userinfo.password = bcrypt.hashSync(userinfo.password,10)
    // console.log(userinfo.password);
     //再通过sql语句写入数据库
    const sql = 'insert into ev_user set ?'
    //执行db语句
    db.query(sql,{username:userinfo.username,password:userinfo.password},(err,results)=>{
        //执行错误
        if(err) return res.cc(err)
        //插入失败
        if(results.affectedRows !== 1) return res.cc("注册失败")
        res.cc('注册成功',0)
     
    })

   
}
exports.login = (req,res)=>{
    //获取表单提交数据
    const userinfo = req.body;
    //sql查询语句
    const sql = 'select * from ev_user where username = ?'
    db.query(sql,userinfo.username,(err,results)=>{
        //执行sql语句失败
        if(err) return res.cc(err);
        //数据库无匹配用户
        if(results.length!==1) return res.cc("登录失败");
        //这个时候我们将用户输入密码跟数据库密码进行匹配
        const compareResult = bcrypt.compareSync(userinfo.password,results[0].password);
        if(!compareResult) return res.cc("登录失败密码错误")
        //将用户数据利用jsonwebtoken生成对应的token 一般密码这类不能加密成token
        //es6展开符
        const user = {...results[0],password:'',user_pic:''}
        const tokenStr = jwt.sign(user,config.jwtSecretKey,{expiresIn:'10h'}) 
        //   res.send('login Ok');
        //将token字符串返回给客户端
        res.send({
            status:0,
            message:"登录成功",
            token:'Bearer '+tokenStr
        })
    })
  
}
